/**
 * 创建音频实例;
 * 创建音频实例时需要传入一个音频的url;
 * 建议：播放音频使用play方法，暂停的话建议使用stop方法（这样下次播放会重头开始，为了在关闭弹窗后下次播放是从头开始的）
 */
class CreateAudio {
  // 音频实例
  audioContext = null;
  // 音频url
  url = null;

  constructor(url) {
    if (!url) {
      console.error("初始化请传入音频URL")
      return
    }
    this.url = url
    // 创建音频实例（也可以play的时候在进行创建）
    this.createAudio()
  }

  // 创建音频实例
  createAudio() {
    try {
      this.audioContext = wx.createInnerAudioContext({
        useWebAudioImplement: true // 是否使用 WebAudio 作为底层音频驱动，默认关闭。对于短音频、播放频繁的音频建议开启此选项，开启后将获得更优的性能表现。由于开启此选项后也会带来一定的内存增长，因此对于长音频建议关闭此选项
      })
      this.audioContext.src = this.url
      this.audioContext.onEnded(() => this.onEnded())
      this.audioContext.onError((e) => this.onError(e))
    } catch (error) {
      console.log("音频初始化失败", error);
    }
  }

  // 播放音频
  play() {
    // const bgm = wx.getBackgroundAudioManager();
    // if (bgm.src && bgm.stop) {
    //   bgm.stop();
    //   bgm = null;
    //   wx.showToast({
    //     title: '暂停背景音乐',
    //     icon: "none"
    //   })
    // }
    this.audioContext.play()
  }

  // 暂停音频
  pause() {
    this.audioContext.pause()
  }

  // 暂停音频（下次播放会重头开始）
  stop() {
    this.audioContext.stop()
    this.playBackgroundAudio()
  }

  // 销毁音频
  destroy() {
    this.audioContext.destroy()
  }

  // 播放结束（可以进行销毁音频实例，需要销毁功能的话，需要在play函数里面调用创建音频，或者play前调用createAudio）
  onEnded() {    
    this.playBackgroundAudio()
  }

  // 播放异常警告
  onError(e) {
    console.error("音频播放异常", e);
  }

  // 播放背景音乐
  playBackgroundAudio() {
    try {
      const pages = getCurrentPages(); 
      let bgm = wx.getBackgroundAudioManager()
      console.log("pages[pages.length - 1].route", pages[pages.length - 1].route);
      if (bgm.src && bgm.paused && bgm.play && pages[pages.length - 1].route === 'pages/index/index') {
        bgm.play()
        bgm = null;
      }
    } catch (error) {
      console.log(error);
    }
  }
}

const prizeSound = new CreateAudio('https://easysart.oss-cn-shenzhen.aliyuncs.com/images/Hokkaido/mp3/ljyx.mp3')

module.exports = {
  prizeSound,
}